#include <vector>
#include <algorithm>

using namespace std;


class Solution {
public:
    vector<vector<int>> merge(vector<vector<int>>& intervals) {
    // 对原数组按区间起始点升序排序
    sort(intervals.begin(), intervals.end(), [](const vector<int>& a, const vector<int>& b) {
    return a[0] < b[0]; // 比较两个区间的起始点，按从小到大排序
    });

    vector<vector<int>> ret;
    int start = intervals[0][0];
    int end = intervals[0][1];
    for(int i = 1; i<intervals.size(); i++)
    {
        if(end < intervals[i][1] && end >= intervals[i][0])
        {
            end = intervals[i][1];
        }
        else if(end < intervals[i][0])
        {
            vector<int> tmp;
            tmp.push_back(start);
            tmp.push_back(end);
            ret.push_back(tmp);
            start = intervals[i][0];
            end = intervals[i][1];
        }
    }
    vector<int> tmp;
    tmp.push_back(start);
    tmp.push_back(end);
    ret.push_back(tmp);

    return ret;

    }
};